In traditional component-based software systems, such as systems implemented by Enterprise Java Bean (EJB), Component Object Model (COM), Common Object Request Broker Architecture (CORBA), and so on, functions of components are exposed as interfaces, while the invocation dependencies among components are tangled with implementation code of components. For example, the invocation dependencies among components B and C are possibly tangled with implementation code of component A as shown in Table 1.
TABLE 1Code in Component A. . .b = ServiceManager.locateService(“B”);b.x( );. . .c = ServiceManager.locateService(“C”);c.y( );. . .
An emerging service-oriented component model, such as Service Component Architecture (SCA), introduces service-oriented concepts into the component model and execution environment thereof. For example, the SCA Assembly Model consists of a series of artifacts which define the configuration of an SCA system in terms of service components which implement and/or use services and connections (wires) and related artifacts which describe how they are linked together. Moreover, SCA aims to encompass a wide range of technologies for service components and for the access methods which are used to connect them. An input which is provided by a service component for other services to invoke the service component per se is called “interface,” and an invocation output via which the service component per se invokes other services is called “reference.”
Compared with traditional component-based software systems, an SCA-based software system externalizes the invocation dependencies among components, that is, a software system with externalized dependencies. In other words, in a software system with externalized dependencies, the invocation dependencies among components (such as “interface” and “reference” of SCA) are implemented by specific code, which is independent of that of components (e.g. a document in Extensible Markup Language (XML)). Consequently, in an SCA-based software system, for example, service required in component A could be provided by any component B that exposes its service. Thus, implementation code of component A could be linked with component B without any additional code.
If components implemented by traditional component technology could be “SCAlized,” then these “SCAlized” components could be assembled with other SCA components without any additional code, thereby achieving the reusing of components implemented by traditional component technology. Moreover, these “SCAlized” components could benefit from management capabilities, such as monitoring, logging, and so on of an SCA-based software system.
In a broad sense, it is desired that the existing component-based system can be composed by advanced applications based on the service-oriented component model, that is, existing legacy systems are adapted to be integrated with novel technologies and platforms. One solution is wrapping the existing legacy systems with clearly defined interfaces according to the advanced specifications or standards which are followed by the applications in which the existing legacy systems will to be integrated. US Patent Application Publication No.: US 2003/0055921 is an example of this solution. In this invention, the whole Object-Oriented application is wrapped as an object facade which will communicate with new components in opposite integrated component-based application through a connectivity bus which can be any standard middleware. The other solution adds a light weight proxy between the legacy system and the applications with advanced technologies. The proxy plays a mediation role between the different protocols which does not force any one counterpart to comply with the other.
As an example, US Patent Application Publication No.: US 2006/0041862 develops an API library to enable the communication between the legacy systems and web services. Legacy systems need employ these APIs so as to be integrated with new systems. US Patent Application Publication No.: US 2004/0054812 focuses on the data integration between the legacy systems and other advanced applications.
However, both of the integration solutions cannot avoid modifying the original source code of traditional systems.
Additionally, in order to experience the advanced features brought from new technologies, porting legacy systems to new platforms (e.g. from Windows operating system to Linux operating system; from standalone Web server to J2EE application server) or with advanced technologies (e.g. from procedural paradigm to object-oriented paradigm) is always both a strong desire and a great concern for users of legacy systems. Understanding and transforming the original legacy system and redeploying the newly ported system are not only time-consuming but also error-prone mainly because the software engineers who perform the porting working are not the original developers. To facilitate the transformation of a legacy system, people have to devote a large amount of efforts in the literature and practice much in the real world to analyze and discover its corresponding high level design to guide the source code transformation.
Addressing this problem, one solution focuses on source code and documentation itself and employs static analysis technologies to abstract the high level designs of the target systems. US Patent Application Publication No.: U.S. Pat. No. 6,847,981 analyzes the Servlet code to extract the Web UI information, business logic/Java class information and SQL information. They synthesize this extracted information to generate the EJB code by an EJB component generator to transform a pure Web application to a J2EE component-based application. US Patent Application Publication No.: 2005/0144226 presents the systems and methods to generate open reusable, business components for Service-Oriented Architecture from existing client/server applications through decomposing them into separate user interface, business logic and event management layers. The different layers are wrapped as services and re-assembled to the open-standard based application. US Patent Application Publication No.: US2005/0138603 presents the migration process and working products of each step for migrating legacy systems to component-based applications. The key steps in this invention also relate to analyzing the source code, mining the components and transforming the original source code to component programs. Another solution relates to profiling, testing and observing systems' behaviors, including actual execution and inspecting execution traces. Although this kind of solution improves the efficiency of the legacy transformation, intensive manual work on source code transformation are not easily avoided.
It can be seen that all solutions reusing components of component-based software systems with existing technologies need to change internal implementation code of components.